package com.example.midushop.mapper.product.sku;

import com.example.midushop.entity.product.sku.ProductSKU;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 商品SKU信息映射接口
 */
@Mapper
public interface ProductSKUMapper {
    /**
     * 添加商品SKU
     * @param spu_id 商品SPUid
     * @param sku_name SKU名称
     * @param code 商品规格编号
     * @param intro 规格介绍
     * @param sales_volume 销量
     * @param quantity 存储量
     * @param price  价格
     * @param cover 商品封面
     * @param status 商品状态
     * @param is_delete 是否删除
     * @param create_time 创建时间
     * @param update_time 修改时间
     * @return 返回受影响行数
     */
    int addProductSKU(@Param("spu_id")long spu_id, @Param("sku_name")String sku_name,
                      @Param("code")String code, @Param("intro")String intro,
                      @Param("sales_volume")long sales_volume, @Param("quantity")int quantity,
                      @Param("price")double price, @Param("cover")String cover,
                      @Param("status")int status, @Param("is_delete")int is_delete,
                      @Param("create_time")Date create_time,@Param("update_time")Date update_time);

    /**
     * 多条件搜索商品SKU信息
     * @param sku_id 商品SKU_id
     * @param spu_id 商品SPU_id
     * @param sku_name 名称
     * @param code 商品编号
     * @return 返回list集合
     */
    List<ProductSKU> findProductSKU(@Param("sku_id") long sku_id,@Param("spu_id") long spu_id,
                                    @Param("sku_name")String sku_name, @Param("code")String code,
                                    @Param("status") int status);

    List<ProductSKU> findProductSKUTwo(@Param("sku_id") long[] sku_id,@Param("spu_id") long spu_id,
                                        @Param("sku_name")String sku_name, @Param("code")String code,
                                       @Param("status") int status);

    /**
     * 修改商品SKU信息
     * @param sku_id 编号数组
     * @param spu_id 商品id
     * @param sku_name 修改后的sku名称
     * @param intro 修改后的sku规格介绍
     * @param sales_volume 修改的销量
     * @param quantity 修改的库存数量
     * @param price 修改的销售价格
     * @param cover 修改的sku封面
     * @param status 商品sku状态
     * @param update_time 更新时间
     * @return 返回修改后的受影响行数
     */
    int UqProductSKU(@Param("sku_id") long sku_id,@Param("spu_id")long spu_id,@Param("sku_name") String sku_name,
                     @Param("intro") String intro,@Param("sales_volume") long sales_volume,@Param("quantity") int quantity,
                     @Param("price") double price,@Param("cover") String cover,@Param("status") int status,@Param("update_time") Date update_time);

}
